Systems and methods of eye tracking calibration

ABSTRACT

Methods and systems to facilitate eye tracking control calibration are provided. One or more objects are displayed on a display of a device, where the one or more objects are associated with a function unrelated to a calculation of one or more calibration parameters. The one or more calibration parameters relate to a calibration of a calculation of gaze information of a user of the device, where the gaze information indicates where the user is looking. While the one or more objects are displayed, eye movement information associated with the user is determined, which indicates eye movement of one or more eye features associated with at least one eye of the user. The eye movement information is associated with a first object location of the one or more objects. The one or more calibration parameters are calculated based on the first object location being associated with the eye movement information.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims a priority benefit of U.S. ProvisionalApplication No. 61/764,939, filed Feb. 14, 2013, entitled “Systems andMethods of Eye Tracking Calibration,” which is incorporated herein byreference in its entirety.

TECHNICAL FIELD

The present disclosure generally relates to eye tracking control and,more specifically, to systems and methods for facilitating eye trackingcontrol calibration.

BACKGROUND

A gaze of a user may be determined using eye tracking technology thatmay be calibrated to the particular user whose gaze is being tracked.Calibration of eye tracking technology may include displayingcalibration points on a display. A user may fixate on the calibrationpoint, and the eye tracking technology may calibrate based on the knownlocations of the calibration points and eye information present throughthe images captured during the calibration processes.

An example of a calibration technique is described in U.S. Pat. No.4,950,069 to Hutchinson, which describes a sequence of calibrationpoints displayed at known locations on the display. The user fixates oneach of the calibration points while the system collects informationrelated to the user's pupil center and glint center. Once thecalibration process is completed, the system computes the coefficientsof a set of linear equations that map the pupil-glint displacement tothe coordinates of the screen.

While such calibration techniques increase accuracy in eye trackingtechnology, they involve explicit involvement from the user, which maybe cumbersome and time-consuming. Furthermore, if calibration is lost(e.g., due to changes in the illumination in the environment), the userwill need to stop the current activity to rerun a calibration process inorder to adjust the calibration parameters.

BRIEF DESCRIPTION OF THE DRAWINGS

Some embodiments are illustrated by way of example and not of limitationin the figures of the accompanying drawings.

FIG. 1 is a device diagram of an example computing device coupled to adocking device capable of facilitating eye tracking control, accordingto some embodiments;

FIG. 2 is a device diagram of another example of a computing devicecoupled to a docking device capable of facilitating eye trackingcontrol, according to some embodiments;

FIGS. 3A-3C are device diagrams of example computing devices capable offacilitating eye tracking control, according to some embodiments;

FIG. 4 is a block diagram of an example software architecture forfacilitating eye tracking control, according to some embodiments;

FIG. 5 is a block diagram of an example flow of data used to facilitateeye tracking control, according to some embodiments;

FIGS. 6A-6C are interface diagrams depicting example user interfacesdisplaying objects to facilitate eye tracking calibration, according tosome embodiments;

FIG. 7 is a flowchart of an example method of facilitating eye trackingcalibration during personal identification number entry, according tosome embodiments;

FIGS. 8A and 8B are flowcharts of example methods of facilitating eyetracking calibration, according to some embodiments; and

FIG. 9 is a block diagram of a machine in the example form of a computersystem within which a set of instructions, for causing the machine toperform any one or more of the methodologies discussed herein, may beexecuted, according to some embodiments.

DETAILED DESCRIPTION

Example systems and methods to facilitate eye tracking controlcalibration are described. In the following description, for purposes ofexplanation, numerous specific details are set forth in order to providea thorough understanding of example embodiments. It will be evident,however, to one skilled in the art that the present technology may bepracticed without these specific details.

A user of a computing device may interact with and control objects andapplications displayed on the computing device through the user's eyemovement. An image of the user's eyes and/or face, captured by a cameraon the computing device or on a device coupled to the computing device,may be analyzed using computer-vision algorithms, such as eye trackingand gaze detection algorithms. For example, the captured images may beprocessed to extract information relating to features of the user's eyesand/or face. The computing device may then use the extracted informationto determine the location of the user's eyes and estimate the gazeinformation associated with the user. Gaze information of a user may bean estimation of where the user is looking and may include informationsuch as a user's line of sight, point of regard information (e.g., alocation on the display at which the user is looking), the direction ofthe user's gaze, and the like. For example, the computing device may beable to estimate at which icon on the display the user is looking. Theestimation of where the user is looking may be used to direct one ormore objects, applications, and the like to perform a particularoperation. For example, the user may direct and control the movement ofan object on the screen depending on where the user is looking on thedisplay of the computing device, including controlling scrollingfunctions, the movement of objects in a virtual game, controlling thepointer and cursor position, and the like. The estimation of where theuser is looking may also be used to analyze the areas or objectsdisplayed on the screen that appear to attract the attention of theuser, or the estimation may be used to study the objects a user looks aton a graphical user interface. For example, the design of an applicationuser interface may be improved using eye tracking information indicatingareas or objects attracting the users' attention so that users have abetter experience when interacting with the application.

A calibration process may be conducted when the user begins using thecomputing device in order to calculate calibration parameters associatedwith the user. These calibration parameters may be taken into account toaccurately determine the location of the user's eyes and estimate thelocation on the display at which the user is looking. The calibrationparameters may also be taken into account to determine the direction ofthe user's eye gaze in three-dimensional (3-D) space (e.g., line ofsight). The computing device may calibrate the eye control calculationsby displaying a sequence of one or more display objects at knownlocations on the display and determining the location on the display atwhich the user is looking while adjusting for unique characteristicsassociated with the user. The calibration process may be performed in amanner such that the user is unaware that the calibration process isoccurring. For example, the user may be playing a game that includesgame objects displayed such that they appear to be moving on the displayof the computing device. The game objects may be used to covertlycalibrate the eye control calculations to more accurately reflect theuser's eye characteristics. This calibration of the system may becontinuous and may take place while the user is playing the game in amanner such that the calibration is undetectable by the user. In thecase of an application not directly controlled by the user (e.g.,collecting eye gaze data while a commercial is displayed on a screen),the calibration parameters might be calculated offline based on the eyemovement patterns detected.

FIG. 1 is a device diagram 100 of an example computing device 102coupled to a docking device 104 capable of facilitating eye trackingcontrol. The computing device 102 may be any type of computing device,including, but not limited to, a smart phone, a personal digitalassistant (PDA), a mobile phone, a computing tablet, an electronicreader, a television, a laptop, a desktop computer, a display device, ahead-mounted display, and the like. During eye tracking control, thecomputing device 102 may be used by the user by holding the computingdevice 102 with one hand, both hands, or while the computing device 102is on a stand or resting on a surface.

A docking device 104 may be coupled to the computing device 102 in anymanner, such as through a universal serial bus (USB) port on thecomputing device 102, micro USB port on the computing device 102, andthe like. While the docking device 104 of FIG. 1 is depicted at thebottom of the computing device 102, one of ordinary skill in the artwill appreciate that the docking device 104 may be located at anysuitable location relative to the computing device 102. The dockingdevice 104 may include a camera module 108 and one or morelight-emitting diodes (LEDs) 106. For explanatory purposes, LEDs 106 aredepicted and described throughout the disclosure. However, one ofordinary skill in the art will appreciate that any appropriatelight-emitting source may be used (e.g., infrared laser). Additionally,while one or more LEDs are depicted through the disclosure, one ofordinary skill in the art will appreciate that the eye trackingfunctionality may operate without LEDs.

The docking device 104 may include any number of infrared LEDs 106 thatmay be placed in a suitable location in any manner within the dockingdevice 104 (e.g., tilted at an angle such that it points toward theuser's face). In a specific embodiment, the one or more LEDs 106 may besynchronized with the one or more cameras in such a manner that the oneor more LEDs are turned on when the one or more cameras are grabbing aframe, and turned off otherwise. In some embodiments, the LEDs may beturned off if no movement has been detected or if the docking device 104and/or computing device 102 go into a sleep mode.

In some embodiments, the docking device 104 may also include a suitabletype of infrared pass filter (e.g., active, mechanical, high-pass,band-pass, etc.). In some embodiments, a high-pass filter that blockslight below 800 nm and allows light above 800 nm is used. In someembodiments, the infrared band pass filter may only allow light between800-900 nm to enter the one or more cameras of the camera module 108.

The camera module 108 may include one or more front-facing camerasplaced in any suitable location in any manner within the docking device104 (e.g., tilted at an angle such that it points toward the user'sface) and may be used to capture images of the user's eyes and/or face.The one or more cameras may be placed at an appropriate distance fromthe LEDs 106 to optimize the proper capture of the infrared light. Insome embodiments, a camera on the computing device 102 is used incombination with camera module 108 in stereo mode. In some embodiments,the camera module 108 may include any one or more of the following: ablack and white (e.g., monochrome) or color (e.g., RGB) complementarymetal-oxide-semiconductor (CMOS) sensor, running at an appropriateframe-per-second rate (e.g., high-definition at 30 frames per second), alens without an infrared block filter and with an appropriate field ofview (e.g., approximately 35 degrees) and depth of field (e.g.,approximately 30-80 cm for a mobile device, and approximately 2-5 metersfor a television), and the like. The one or more cameras in the cameramodule 108 may be positioned such that the one or more cameras aretilted toward a user's face.

The images captured by the camera may be rotated. The eye trackingsoftware can use sensors on the computing device 102 (e.g.,accelerometer, magnetometer, etc.) to detect the orientation of thecomputing device 102 and rotate the image accordingly so that it can beproperly processed.

The LEDs 106 emit light that may be focused and centered toward the eyesof the user. The infrared light from the LEDs 106 is reflected in thepupil and on the cornea of the user and recorded by the cameras in thecamera module 108. In some embodiments, the LEDs 106 may be synchronizedwith the one or more cameras so that the LEDs 106 are on only when theone or more cameras are grabbing an image. In some embodiments, toimprove the image quality, the visible light below 800 nm is filteredout using an infrared pass filter. The field of view and depth of viewof the lenses of the one or more cameras in the camera module 108 mayallow the user to move around, thereby accommodating for head posevariance of the user. The eye tracking control software may analyze theimages taken by the camera module 108 to provide screen coordinates (x,y) of where the user is looking on the display of the computing device102. These coordinates may be used for any number of applications (e.g.,scrolling, moving objects, selecting icons, playing games, etc.).

The LEDs 106 and the camera module 108 may be turned on and/or off inany manner, such as by utilizing an external slider, an on-off dedicatedbutton on the side or on the back of either the computing device 102 orthe docking device 104, controlled by an application or a digital buttonon the screen, controlled by movement or shaking of the computing device102 and/or the docking device 104, controlled by voice commands,on-screen capacitive buttons, touch pad(s), bio-signals (e.g., EMG, EEG,etc.), remote control, hand and/or figure gestures, and the like. Assuch, in some embodiments, the eye tracking components may consume poweronly while the LEDs and the camera are turned on (e.g., when the user isusing the eye tracking features).

In some embodiments, the eye tracking features are optimized when thecamera is located at the bottom of the computing device 102 (e.g., withrespect to the perspective of the user). The user may rotate thecomputing device 102 coupled to the docking device 104 to properlyorient the camera module 108 such that it is located at the bottom ofthe computing device 102. In some embodiments, using the accelerometerand/or magnetometer of the computing device 102, the LEDs, the passfilter, and/or the camera may be turned on and/or off depending on theorientation of the computing device 102 and the docking device 104(e.g., turn off the LEDs and the camera when the computing device 102and the docking device 104 are rotated such that the camera module 108is located at the top of the computing device 102 with respect to theperspective of the user).

The LEDs and the camera may be turned off when the user's face is notrecognized for a predetermined amount of time (e.g., 5-10 seconds) andmay turn on again when the user's face or parts of the user's face(e.g., the user's iris) is detected and recognized.

FIG. 2 is a device diagram 200 of another example of a computing device202 coupled to a docking device 204 capable of facilitating eye trackingcontrol. The example shown in FIG. 2 may operate similarly to theexample shown in FIG. 1 and may incorporate any one or combination offeatures described for FIG. 1. However, FIG. 2 shows that the dockingdevice 204 may be integrated with LEDs 206, and the camera module 208 ofthe computing device 202 may be used (instead of the camera module beingintegrated with the docking device 204). In some embodiments that couplethe computing device 202 with the docking device 204 using a USB, amicro-USB port, or a proprietary port, the configuration depicted inFIG. 2 may allow for faster transfer of images from the camera since thecamera of the computing device 202 is used to capture the images. Thefront-facing camera for eye tracking control may be utilized whilesimultaneously utilizing one or more back-facing cameras.

FIGS. 3A-3C are device diagrams of example computing devices capable offacilitating eye tracking control. The examples shown in FIGS. 3A-3C mayoperate similarly to the example shown in FIG. 1 and may incorporate anyone or combination of features described for FIG. 1. However, the LEDsand camera modules are integrated into the computing device (instead ofbeing part of a docking device). FIGS. 3A-3C depict computing devices300, 310, 320, respectively, with LEDs 302, 312, 322 and camera modules304, 314, 324 integrated into the computing devices 300, 310, and 320 indifferent example configurations (with respect to the user'sperspective).

The LEDs 302, 312, 322 and the camera modules 304, 314, 324 on thecomputing devices 300, 310, 320 may be located in any one of a number ofconfigurations on the computing devices. FIG. 3A shows the LEDs 302 andthe camera module 304 being located at the bottom of the computingdevice 300. FIG. 3B shows the LEDs 312 being located on one side of thecomputing device 310 while the camera module 314 is located on theopposite side of the computing device 310. FIG. 3C shows the LEDs 322and the camera module 324 being located on the same side of thecomputing device 320.

FIG. 4 is a block diagram of an example software architecture 400 forfacilitating eye tracking control. Any one or more of the components ofthe software architecture 400 may run on either a control processingunit (CPU) of the computing device or on a combination of a CPU and agraphics processing unit (GPU) of the computing device. In someembodiments, any one or more of the components of the softwarearchitecture 400 may run on a dedicated chip. The software may run as abackground process (e.g. as part of the operating system (OS), in a webbrowser, etc.) and may provide an application programming interface(API) that other applications can access. The API may raise an event oruse some other similar mechanism to send the information of where theuser is looking on the screen to other applications.

The software architecture 400 may be divided into different layers. Thebottom layer may include a camera module 414 and an infraredillumination module 416 that may correspond to the respective hardware(e.g. the camera(s), the infrared illumination, etc.). A camera layermay include a camera control module 410 that may be in charge ofcommunicating with the camera(s) in order to perform camera operationssuch as, for example, starting the camera, grabbing images, controllingthe camera properties, and the like. This layer may also include acamera and light sync module 412, which may synchronize the one or morecameras and the infrared emitters so that the lights are turned on bythe eye tracking software in order to improve tracking of the user'seyes and minimize energy consumption. In some embodiments, the eyetracking algorithms may be used to optimize the infrared illumination bydecreasing or increasing the amount of light depending on parametersissued by the eye tracking engine. In some embodiments, the camera layermay be configured to strobe the infrared LEDs at the frequency of thecamera trigger output.

The camera layer may deliver images to the eye tracking layer or eyetracking engine. In the eye tracking layer, a gaze estimation module 406may process images to find features like face location, eye regionlocation, pupil center, pupil size, location of the corneal reflections,eye corners, iris center, iris size, and the like. These features may beused by the eye detection and tracking module 408 in the gaze estimationstage, which may be in charge of calculating the point of regard of theuser, which may be the location on the display where the user islooking. The gaze estimation module 406 may also calculate the opticaland visual axes of the user's eyes and calibrate the calculation basedon specific features of the user.

The API layer may be used for communication between the eye trackinglayer and applications that use eye gaze information (e.g., OS API,games that employ eye gaze information, etc.). An API module 404 maysend data calculated by the eye tracking layer, such as coordinates ofthe point of regard, three-dimensional (3D) location of the user's eyes,pupil size, distance between the eyes, head orientation, head movement,and the like. The API module 404 may also accept commands from anapplication to the eye tracking layer (e.g., to start and/or stop theeye tracking engine, query for specific information, etc.). Anapplication module 402 may connect to the eye tracker's API module 404and use eye gaze information for any suitable purpose (e.g., control anapp or a game, record eye data for visual behavior studies, etc.).

FIG. 5 is a block diagram of an example flow of data used to facilitateeye tracking control. The one or more cameras and the infrared LEDillumination modules 502 may capture an image of the user. The eyefeature detection module 504 may use the captured data to detect eyefeatures (e.g., location of eye(s), pupil(s), iris(es), cornealreflections, etc.). Using the detected eye features, the gaze estimationmodule 506 may estimate the user's point of regard and/or line of sight,which may then be used to control aspects of an application through theeye control module 508.

A calibration process may be conducted when the user initially uses theeye tracking functionality in order to calculate calibration parametersspecific to the user (e.g., vertical and horizontal offset betweenoptical and visual axes) and/or to calculate parameters of a mappingfunction that may map eye features on the image coordinate system to thescreen coordinate system. These calibration parameters and theinformation of the face and eyes are then employed to estimate where theuser is looking on the screen through a gaze estimation algorithm. Anysuitable calibration process may be used to calculate the calibrationparameters specific to the user.

In some embodiments, the eye tracking system may be calibrated (orrecalibrated) by matching a path followed by a moving target displayedon a display of the computing device with a path described by any eyeinformation such as the pupil, the iris, the point of regard, theoptical axis, the visual axis, the one or more corneal reflectionsproduced by the one or more infrared light sources, or a combination ofthese.

In some embodiments, an application that uses eye tracking informationmay display a sequence of static or moving objects unrelated to acalibration process in different locations of the screen. For example, agame may display a sequence of graphical objects during an initial stageof the game (e.g., a sequence of enemies). The user may look at thedisplayed graphical objects and may interact with them (e.g., bypressing a button to shoot at the objects). While the user plays thisstage of the game, the application may collect eye information andcalculate the calibration parameters, where such processes areundetectable to the user. Once the one or more calibration parametershave been determined, the system may compute gaze data associated withthe user, including the point of regard indicating the location of thescreen at which the user is looking and/or the line of sight indicatingthe direction of the user's gaze in 3D space. At any point, theapplication may send coordinates corresponding to onscreen locations ofgraphical objects to the eye tracking engine in order to validate and/orupdate the calibration parameters. In some embodiments, the applicationmay identify a portion of the screen where one or more calibrationparameters are inaccurate and may display objects in the area that maybe used to adjust the one or more calibration parameters.

In some embodiments, an application may present one or more objects astext displayed at known locations, and the text may be used forcalibration. For example, a set of instructions may be displayed on thescreen describing how to use the eye tracking software. While the userreads the text of the instructions, the eye information associated withthe user may be collected by the eye tracking system. The eye trackingsystem may determine when the user is reading the text from the eyeinformation collected. The text in the instructions may appearsequentially as the user reads to help the system determine what textthe user is reading at any given time. The eye information collected maybe associated with the location of the text and used to compute thecalibration parameters such that the eye tracking software will becalibrated for the user once the user has finished reading the text.

In some embodiments, a user may be prompted to read and input differentinformation during the initial setup process of a new device (e.g., atablet, a smartphone, a PC, a TV, etc.). Examples of this may includereading information related to the device, setting the time zone of thedevice, setting up a network, entering the user's name, setting up aprofile, advancing to the next page, and the like. The system maycollect eye information while the user undergoes this process and matchselected events (e.g. user selection of specific elements on the screen)to fixations taking place during a time window before the event occurs.The eye information collected in such way may be used to compute thecalibration parameters such that the eye tracking software will becalibrated once the setup process is completed.

In some embodiments, one or more objects (e.g., numbers of a personalidentification number (PIN) on a mobile device, objects and/orcharacters in a game, etc.) may be displayed on the display of thecomputing device such that they appear to be moving on a path withconstant or variable velocity, which at some point reaches a value thatis greater than zero. The user may look at one of the objects beingdisplayed and follow that object with the user's eyes. The calibrationparameters for the user may be computed by matching the path of thatobject with the path described by the user's eyes or, if the system hasalready been calibrated, the calculated point of regard, the visualaxis, the optical axis, or any combination of these. If there isuncertainty between two or more objects, the application may modify thepath and/or the velocity of those objects to determine at which objectthe user is looking. In some embodiments, the calibration process mayoccur in a manner such that the user may be unaware that the process isoccurring. In some embodiments, the calibration process may runcontinuously in the background to continuously improve the calibrationquality.

At any given point in time, a user interface may contain a set of Nnumber of objects Oi (where i=1 . . . N) that move on a path Pi withvelocity Vi. The paths and velocities may change over time. For eachframe captured by the one or more cameras, the system may match the pathPi and velocity Vi with the path E and velocity Ve of one or both of theeyes of the user on a window of size W. The path E and the velocity Vemay be calculated based on the location and movement of one or more eyefeatures (e.g., the pupils, the irises, the one or more cornealreflections, and the like). If the system has been previouslycalibrated, the path E and the velocity Ve may be calculated based onthe point of regard, the optical axis, the visual axis, or any otherappropriate factor. The comparison may be carried out by measuring thesimilarity of Pi and Vi with E and Ve over the last W frames.Coordinates of objects may be normalized so they are in the samecoordinate system.

The matching algorithm may calculate a matching coefficient Mi thatindicates the degree of similarity between the path of the object Pi andthe path of one or both eyes E. In some embodiments, the matchingcoefficient may be the Pearson product-moment correlation coefficient.If the matching coefficient Mi is above a threshold T, the trajectoriesare considered to match.

For each comparison, multiple objects may have a matching coefficientabove the threshold. The system may either ignore that comparison andcontinue to the next frame or may modify the path and/or velocity of theobjects in dispute (and perhaps other objects as well) to ensure correctmatching over the next frames.

For instance, consider a login screen on a mobile device that presentsthe numbers 0 to 9. Typically, a user may have to type in the correctdigits of the user's PIN in order to unlock the device. However, usingthe eye tracking system, the user may look at each of the numbers of thePIN. In some embodiments, the numbers may move in different directionsand at different velocities. For each new image captured by the camera,the system compares the trajectories of the numbers with the trajectoryfollowed by the eyes (e.g. pupil centers). When more than one of thedigits has a matching coefficient above the threshold, the system maymodify the trajectories of those objects (and perhaps other objects aswell) in a way that ensures correct matching. In this particularapplication, since the system knows which digit the user should belooking at in order to unlock the device, the modification of thepath/velocity may be done in a way that maximizes the matchingcoefficient for that digit. If the correct digit is identified as thematching one, the system proceeds to the next digit (or unlocks thedevice if it was the last digit).

In another embodiment, the algorithm may run in the background while theuser plays a game where characters and objects move on the screen. Forevery new frame, the system calculates the similarity of the pathsfollowed by the objects displayed on the screen and the path followed byone or both eyes or point of regard (if the system is alreadycalibrated). When the system finds a match, it uses the eye informationof the images that produced the match to recalculate the calibrationparameters. This process happens in the background and is invisible tothe user and helps improve accuracy over time. The game may detect thata full recalibration is necessary, in which case the game may insert asequence of events that are suited to recalibrate the system in such away that the process is invisible for the user.

In another embodiment, the user may look at a commercial displayed on ascreen (e.g. a tablet or a computer monitor) in a supermarket checkoutline. The commercial may contain elements that move on the screen indifferent directions. The system calculates the similarity between thepath and velocity of the objects and the path and velocity of the one orboth eyes and finds a match. The system uses eye information collectedwhen the match takes place to calibrate the system. Once the system iscalibrated, it may inform the user, who may then use his or her eyes tointeract with the information displayed on the screen. In someembodiments, the calibration process may be conducted after thecommercial has been shown, and the calibration parameters may becomputed in the cloud. This may be performed by creating a commercialthat contains moving elements that can then be matched with the eyemovement patterns of a user.

FIGS. 6A-6C are interface diagrams depicting example user interfaces600, 610, and 620 displaying objects to facilitate eye trackingcalibration. In FIG. 6A, the user interface 600 may display text that auser may read. The text may be in a known location of the user interface600. The eye tracking system may match the sequence of eye movementsthat take place when the user reads the text (e.g., the sequence offixations and saccades) and may use the eye information collected tocompute the one or more calibration parameters. For example, the eyetracking system may detect that the user's fixation is at location 602when the user begins reading the word “READ” and may similarly detectthis for each word in the text such that the eye tracking system may becalibrated accordingly.

The user interface 610 of FIG. 6B shows objects (e.g., object 612)moving in various directions each following a particular path. Theobjects may be objects in an application the user is accessing. Forexample, the objects may be game objects in a game the user is playingon a computing device. As the one or more objects move on the userinterface 610, the eye tracking system may track the user's eyemovements and collect eye information (e.g., information about thepupil, iris, corneal reflections, optical axis, visual axis, etc.). Theeye tracking system may measure the similarity of the paths of theobjects with the path of the user's eye features to determine at whichobject the user is looking. The eye information collected may beassociated with the location of the object on the display to compute theone or more calibration parameters.

The user interface 620 of FIG. 6C shows objects 0 to 9 representingnumbers that may be included in a user's PIN used to access computingdevice features, including unlocking the computing device, accessing anapplication on the computing device, and the like. Each of the objects 0to 9 may move at any particular velocity to any particular direction.When the user wishes to enter a PIN, the user may look at and/or followthe object representing the first number in the PIN. If the user hasgazed upon the correct first number, the user may be notified that theuser may look at the next number in the PIN. The notification may beprovided to the user in any form. For example, the computing device mayvibrate when the user has looked at the correct number, a notificationmay be displayed on the user interface 620, and the like. In someembodiments, the objects 0 to 9 may change directions after each correctentry of a digit of the PIN. When the user has correctly entered the PINby gazing upon the correct numbers, access may be granted. Additionally,the eye tracking system may be calibrated as the user enters the PIN.

The movement pattern of the objects may change dynamically to allow thesystem to unambiguously match the movement of the eye with the movementof the digit. When uniqueness is established, the system may identify anarea of the screen for which it has not yet obtained calibration dataand display the next digit in that area. By repeating this operation fora particular number of times, the system will have obtained enoughcalibration data to estimate eye gaze accurately and will havecontrolled the user identity with the same security as physicallyentering the PIN. Further, since the user does not type the digits withthe hands, it may be difficult for an observer to guess the PIN. In someembodiments, access control may be further combined with iris and/orface recognition, thereby achieving a higher degree of certainty. Insome embodiments, iris and/or face recognition may occur using the imagethat is used to track the user's eye movement, another camera of thecomputing device, and the like. In some embodiments, voice recognitionmay also be used to obtain access.

FIG. 7 is a flowchart of an example method 700 of facilitating eyetracking calibration during PIN entry. The method 700 may allow a userto unlock a computing device or an application on the computing deviceby looking at each digit of the set of digits that form a PIN of theuser. The objects corresponding to numbers 0 to 9 may move on the screenin a seemingly random pattern. The system may include an eye trackingsystem that tracks the movements of the user's eye or eyes and matchesthe path of the eye movement with the path of the character the user islooking at. In some embodiments, this path can be changed dynamically toensure a correct match. The eye tracking information captured during thescreen unlock is used to calculate the user-specific calibrationparameters of the gaze estimation subsystem.

In operation 702, the display digits 0 to 9 may be displayed on adisplay of the computing system. The digits may be displayed when a useris attempting to log into the user's computing device, an application onthe computing device, and the like.

In operation 704, the eye tracking layer may determine whethercalibration data exists for the user of the computing device.

In operation 706, if calibration data exists, the eye tracking layerdetermines whether the user's point of regard is located on the correctdigit of the user's PIN.

In operation 708, if the user's point of regard is not on the correctdigit, the eye tracking layer may match the user's eye movement with themovement of the corresponding digit that the user is looking at.

In operation 710, the eye tracking layer may determine whether theuser's eye movement matches the movement of the corresponding digit.

In operation 712, if there is not a match between the user's eyemovement and the movement of one of the digits being displayed, the eyetracking layer may return an error and may inform the user that thelogin was not successful.

In operation 714, if there is a match between the user's eye movementand the movement of a digit being displayed, then that data is saved forrecalibration of the eye tracking system.

In operation 716, once the data is saved for recalibration, or if theuser's point of regard is on the correct digit, the eye tracking layermay confirm whether the number gazed upon was the correct number to beentered for the PIN.

In operation 718, the eye tracking layer may return feedback to the userdepending on whether the correct number in the PIN was gazed upon. Thefeedback may be any feedback that notifies the user that the digit gazedupon has been processed (e.g., vibration of the computing device, visualnotification on the computing device, a sound, etc.).

In operation 720, the eye tracking layer determines whether the digitjust processed was the last digit in the PIN.

In operation 722, if the digit just processed was not the last digit inthe PIN, the eye tracking layer may move on to the next digit. In someembodiments, this includes changing the direction and velocity of thedigits displayed in operation 702.

In operation 724, if the digit just processed was the last digit in thePIN, the eye tracking layer may recalibrate the eye tracking systembased on data acquired from the matching of the user's eye movement tothe digit movement.

In operation 726, the eye tracking layer may log the user into thecomputing device or to an application on the computing device.

In operation 728, if calibration data does not exist in operation 704,the eye tracking layer may match the user's eye movement with thecorresponding digit based on the movement of the digit.

In operation 730, the eye tracking layer determines if there is a matchbetween the user's eye movement and the movement of one of the digitsbeing displayed. In operation 712, if there is no match, the eyetracking layer may return an error and may inform the user that thelogin was not successful.

In operation 732, if there is a match, the eye tracking layer may savethe data acquired from matching the user's eye movement and thecorresponding digit for calibration.

In operation 734, the eye tracking layer may confirm that the digitgazed upon by the user is the correct number in the PIN.

In operation 736, the eye tracking layer may return feedback to the userdepending on whether the correct number in the PIN was gazed upon. Thefeedback may be any feedback that notifies the user that the digit gazedupon has been processed (e.g., vibration of the computing device, visualnotification on the computing device, a sound, etc.).

In operation 738, the eye tracking layer may determine whether the digitjust processed was the last digit in the PIN.

In operation 740, if the digit just processed was not the last digit inthe PIN, the eye tracking layer may move on to the next digit. In someembodiments, this may include changing the direction and velocity of thedigits displayed in operation 702.

In operation 742, if the digit just processed was the last digit in thePIN, the eye tracking layer may calibrate the eye tracking system basedon data acquired from the matching of the user's eye movement to thedigit movement.

In operation 744, the eye tracking later may log the user into thecomputing device or to an application on the computing device.

FIGS. 8A and 8B are flowcharts of example methods 800 and 850,respectively, of facilitating eye tracking calibration. The method 800of FIG. 8A provides for calibration of an eye tracking system based onfeatures and/or characteristics of a user by calculating one or morecalibration parameters employed by the system to calculate the point ofregard of the user, and the method 850 of FIG. 8B provides forrecalibration of an eye tracking system that may have been previouslycalibrated for a user. While the examples of FIGS. 8A and 8B describemethods of calibration of a user, one of ordinary skill in the art willappreciate that the calibration methods may be used for more than oneuser using the eye tracking system at a given time.

In operation 802, a hardware-implemented display module displays objectson the display of the computing device of the user. The objects may beassociated with a function unrelated to a calculation of eye movementinformation, calibration parameters, or gaze information (e.g., gamefunctions, login functions, etc.).

In operation 804, a hardware-implemented eye tracking module maydetermine the eye movement information associated with the user. Asdescribed above, the eye movement information may include anyinformation associated with the features and/or characteristics of theuser (e.g., face location, eye region location, pupil center, pupilsize, location of the corneal reflections, eye corners, iris center,iris size, iris patterns, eye movement patterns, etc.).

In operation 806, the hardware-implemented eye tracking module mayassociate the eye movement information with a location of one or moreobjects being displayed on the computing device. In some embodiments,the eye movement information may be associated with the location of anobject as the object moves across the display. In some embodiments, theeye movement information may be associated with objects appearing atdifferent locations on the display. In some embodiments, the eyemovement information may be associated with static objects.

In operation 808, the hardware-implemented eye tracking module maycalibrate (or recalibrate) the eye tracking system by calculatingcalibration parameters based on the association of the eye movementinformation and the location of the one or more objects displayed.

Once the eye tracking system is calibrated for the user, the eyetracking system may begin determining gaze information for the userbased on the calibration parameters that are specific to the user (ascalculated using the method 800 of FIG. 8A). FIG. 8B shows a method 850of determining gaze information for the user.

In operation 852, a hardware-implemented display module displays objectson the display of the computing device of the user. The objects may beassociated with a function unrelated to a calculation of eye movementinformation, calibration parameters, or gaze information (e.g., gamefunctions, login functions, etc.).

In operation 854, a hardware-implemented eye tracking module maydetermine the gaze information associated with the user. As describedabove, the gaze information may indicate information associated withwhere the user is looking, which may include point of regardinformation, line of sight information, information about the directionof the user's gaze, and the like. The gaze information may be calculatedusing the calibration parameters calculated for the user.

In operation 856, the hardware-implemented eye tracking module mayassociate the gaze information with a location of one or more objectsbeing displayed on the computing device. In some embodiments, the gazeinformation may be associated with the location of an object as theobject moves across the display. In some embodiments, the gazeinformation may be associated with objects appearing at differentlocations on the display. In some embodiments, the gaze information maybe associated with static objects.

In operation 858, the hardware-implemented eye tracking module mayadjust the calibration parameters based on the association of the gazeinformation and the location of the one or more objects displayed.

Certain embodiments are described herein as including logic or a numberof components, modules, or mechanisms. Modules may constitute eithersoftware modules (e.g., code embodied on a machine-readable medium or ina transmission signal) or hardware modules. A hardware module is atangible unit capable of performing certain operations and may beconfigured or arranged in a certain manner. In example embodiments, oneor more computer systems (e.g., a standalone, client or server computersystem) or one or more hardware modules of a computer system (e.g., aprocessor or a group of processors) may be configured by software (e.g.,an application or application portion) as a hardware module thatoperates to perform certain operations as described herein.

In various embodiments, a hardware module may be implementedmechanically or electronically. For example, a hardware module maycomprise dedicated circuitry or logic that is permanently configured(e.g., as a special-purpose processor, such as a field programmable gatearray (FPGA) or an application-specific integrated circuit (ASIC)) toperform certain operations. A hardware module may also compriseprogrammable logic or circuitry (e.g., as encompassed within ageneral-purpose processor or other programmable processor) that istemporarily configured by software to perform certain operations. Itwill be appreciated that the decision to implement a hardware modulemechanically, in dedicated and permanently configured circuitry, or intemporarily configured circuitry (e.g., configured by software) may bedriven by cost and time considerations.

Accordingly, the term “hardware module” should be understood toencompass a tangible entity, be that an entity that is physicallyconstructed, permanently configured (e.g., hardwired) or temporarilyconfigured (e.g., programmed) to operate in a certain manner and/or toperform certain operations described herein. Considering embodiments inwhich hardware modules are temporarily configured (e.g., programmed),each of the hardware modules need not be configured or instantiated atany one instance in time. For example, where the hardware modulescomprise a general-purpose processor configured using software, thegeneral-purpose processor may be configured as respective differenthardware modules at different times. Software may accordingly configurea processor, for example, to constitute a particular hardware module atone instance of time and to constitute a different hardware module at adifferent instance of time.

Hardware modules can provide information to, and receive informationfrom, other hardware modules. Accordingly, the described hardwaremodules may be regarded as being communicatively coupled. Where multipleof such hardware modules exist contemporaneously, communications may beachieved through signal transmission (e.g., over appropriate circuitsand buses) that connect the hardware modules. In embodiments in whichmultiple hardware modules are configured or instantiated at differenttimes, communications between such hardware modules may be achieved, forexample, through the storage and retrieval of information in memorystructures to which the multiple hardware modules have access. Forexample, one hardware module may perform an operation, and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware module may then, at a latertime, access the memory device to retrieve and process the storedoutput. Hardware modules may also initiate communications with input oroutput devices, and can operate on a resource (e.g., a collection ofinformation).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesthat operate to perform one or more operations or functions. The modulesreferred to herein may, in some example embodiments, compriseprocessor-implemented modules.

Similarly, the methods described herein may be at least partiallyprocessor-implemented. For example, at least some of the operations of amethod may be performed by one or more processors orprocessor-implemented modules. The performance of certain of theoperations may be distributed among the one or more processors, not onlyresiding within a single machine, but deployed across a number ofmachines. In some example embodiments, the processor or processors maybe located in a single location (e.g., within a home environment, anoffice environment or as a server farm), while in other embodiments theprocessors may be distributed across a number of locations.

The one or more processors may also operate to support performance ofthe relevant operations in a “cloud computing” environment or as a“software as a service” (SaaS). For example, at least some of theoperations may be performed by a group of computers (as examples ofmachines including processors), these operations being accessible via anetwork (e.g., the Internet) and via one or more appropriate interfaces(e.g., APIs).

Example embodiments may be implemented in digital electronic circuitry,or in computer hardware, firmware, software, or in combinations of them.Example embodiments may be implemented using a computer program product,e.g., a computer program tangibly embodied in an information carrier,e.g., in a machine-readable medium for execution by, or to control theoperation of, data processing apparatus, e.g., a programmable processor,a computer, or multiple computers.

A computer program can be written in any form of programming language,including compiled or interpreted languages, and it can be deployed inany form, including as a stand-alone program or as a module, subroutine,or other unit suitable for use in a computing environment. A computerprogram can be deployed to be executed on one computer or on multiplecomputers at one site or distributed across multiple sites andinterconnected by a communication network.

In example embodiments, operations may be performed by one or moreprogrammable processors executing a computer program to performfunctions by operating on input data and generating output. Methodoperations can also be performed by, and apparatus of exampleembodiments may be implemented as, special purpose logic circuitry(e.g., a FPGA or an ASIC).

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other. Inembodiments deploying a programmable computing system, it will beappreciated that that both hardware and software architectures requireconsideration. Specifically, it will be appreciated that the choice ofwhether to implement certain functionality in permanently configuredhardware (e.g., an ASIC), in temporarily configured hardware (e.g., acombination of software and a programmable processor), or a combinationof permanently and temporarily configured hardware may be a designchoice. Below are set out hardware (e.g., machine) and softwarearchitectures that may be deployed, in various example embodiments.

FIG. 9 is a block diagram of a machine in the example form of a computersystem 900 within which instructions, for causing the machine to performany one or more of the methodologies discussed herein, may be executed.In alternative embodiments, the machine operates as a standalone deviceor may be connected (e.g., networked) to other machines. In a networkeddeployment, the machine may operate in the capacity of a server or aclient machine in server-client network environment, or as a peermachine in a peer-to-peer (or distributed) network environment. Themachine may be a personal computer (PC), a tablet PC, a set-top box(STB), a PDA, a cellular telephone, a web appliance, a network router,switch or bridge, or any machine capable of executing instructions(sequential or otherwise) that specify actions to be taken by thatmachine. Further, while only a single machine is illustrated, the term“machine” shall also be taken to include any collection of machines thatindividually or jointly execute a set (or multiple sets) of instructionsto perform any one or more of the methodologies discussed herein.

Example computer system 900 includes a processor 902 (e.g., a CPU, aGPU, or both), a main memory 904, and a static memory 906, whichcommunicate with each other via a bus 908. Computer system 900 mayfurther include a video display device 910 (e.g., a liquid crystaldisplay (LCD) or a cathode ray tube (CRT)). Computer system 900 alsoincludes an alphanumeric input device 912 (e.g., a keyboard), a userinterface (UI) navigation device 914 (e.g., a mouse or touch sensitivedisplay), a disk drive unit 916, a signal generation device 918 (e.g., aspeaker), and a network interface device 920.

Disk drive unit 916 includes a machine-readable medium 922 on which isstored one or more sets of instructions and data structures (e.g.,software) 924 embodying or utilized by any one or more of themethodologies or functions described herein. Instructions 924 may alsoreside, completely or at least partially, within main memory 904, withinstatic memory 906, and/or within processor 902 during execution thereofby computer system 900, with main memory 904 and processor 902 alsoconstituting machine-readable media.

While machine-readable medium 922 is shown in an example embodiment tobe a single medium, the term “machine-readable medium” may include asingle medium or multiple media (e.g., a centralized or distributeddatabase, and/or associated caches and servers) that store the one ormore instructions or data structures. The term “machine-readable medium”shall also be taken to include any tangible medium that is capable ofstoring, encoding, or carrying instructions for execution by the machineand that cause the machine to perform any one or more of themethodologies of the present technology, or that is capable of storing,encoding, or carrying data structures utilized by or associated withsuch instructions. The term “machine-readable medium” shall accordinglybe taken to include, but not be limited to, solid-state memories, andoptical and magnetic media. Specific examples of machine-readable mediainclude non-volatile memory, including by way of example semiconductormemory devices, e.g., Erasable Programmable Read-Only Memory (EPROM),Electrically Erasable Programmable Read-Only Memory (EEPROM), and flashmemory devices; magnetic disks such as internal hard disks and removabledisks; magneto-optical disks; and CD-ROM and DVD-ROM disks.

Instructions 924 may further be transmitted or received over acommunications network 926 using a transmission medium. Instructions 924may be transmitted using network interface device 920 and any one of anumber of well-known transfer protocols (e.g., HTTP). Examples ofcommunication networks include a local area network (LAN), a wide areanetwork (WAN), the Internet, mobile telephone networks, Plain OldTelephone (POTS) networks, and wireless data networks (e.g., WiFi andWiMAX networks). The term “transmission medium” shall be taken toinclude any intangible medium that is capable of storing, encoding orcarrying instructions for execution by the machine, and includes digitalor analog communications signals or other intangible media to facilitatecommunication of such software.

Although an embodiment has been described with reference to specificexample embodiments, it will be evident that various modifications andchanges may be made to these embodiments without departing from thebroader spirit and scope of the technology. Accordingly, thespecification and drawings are to be regarded in an illustrative ratherthan a restrictive sense. The accompanying drawings that form a parthereof, show by way of illustration, and not of limitation, specificembodiments in which the subject matter may be practiced. Theembodiments illustrated are described in sufficient detail to enablethose skilled in the art to practice the teachings disclosed herein.Other embodiments may be utilized and derived therefrom, such thatstructural and logical substitutions and changes may be made withoutdeparting from the scope of this disclosure. This Detailed Description,therefore, is not to be taken in a limiting sense, and the scope ofvarious embodiments is defined only by the appended claims, along withthe full range of equivalents to which such claims are entitled.

Such embodiments of the inventive subject matter may be referred toherein, individually and/or collectively, by the term “invention” merelyfor convenience and without intending to voluntarily limit the scope ofthis application to any single invention or inventive concept if morethan one is in fact disclosed. Thus, although specific embodiments havebeen illustrated and described herein, it should be appreciated that anyarrangement calculated to achieve the same purpose may be substitutedfor the specific embodiments shown. This disclosure is intended to coverany and all adaptations or variations of various embodiments.Combinations of the above embodiments, and other embodiments notspecifically described herein, will be apparent to those of skill in theart upon reviewing the above description.

What is claimed is:
 1. A method comprising: displaying a first movingobject on a display of a computing device, the first moving objectmoving along a first path; displaying a second moving object on thedisplay of the computing device, the second moving object moving along asecond path; capturing images of at least one eye of a user while thefirst moving object and the second moving object are displayed; whilethe first and second moving objects are displayed, determining, based onthe images of the at least one eye captured while the first movingobject and the second moving object are displayed, eye movementinformation associated with the user, the eye movement informationindicating eye movement of one or more eye features associated with atleast one eye of the user; determining which of the first path and thesecond path matches the eye movement information; associating the eyemovement information with the matching path; calculating one or morecalibration parameters for the user based on a location of the matchingpath and the eye movement information, the one or more calibrationparameters relating to a calculation of gaze information of a user ofthe computing device; calculating gaze information based on the eyemovement information and the one or more calibration parameters, thegaze information indicating information about where the user is looking;in response to the associating of the eye movement information with thematching path: changing the first path of the first moving object to athird path, changing the second path of the second moving object to afourth path, and determining that the matching path corresponds to atleast a portion of a login sequence of a user; after the changing of thefirst path and the second path, determining second eye movementinformation indicating second eye movement of the one or more eyefeatures associated with the at least one eye of the user; determiningwhich of the third path and the fourth path better matches the secondeye movement of the one or more eye features associated with the atleast one eye of the user; associating the second eye movementinformation with the determined path; determining that the determinedpath corresponds to a last portion in the login sequence of the user;and based on the determination that the determined path corresponds tothe last portion in the login sequence of the user, granting access toan account of the user.
 2. The method of claim 1, wherein the one ormore calibration parameters comprise vertical offset or horizontaloffset between optical and visual axes of the user.
 3. The method ofclaim 1, further comprising: displaying a third object at a firstlocation on the display; displaying a fourth object at a second locationon the display after the third object is displayed at the firstlocation; while the third object and the fourth object are displayed,determining the gaze information associated with the user; associatingthe gaze information with the first location and the second location;and adjusting the one or more calibration parameters based on the gazeinformation being associated with the first location and the secondlocation.
 4. The method of claim 1, further comprising: identifying aportion of the display of the computing device for which a calibrationparameter of the one or more calibration parameters is inaccurate;displaying the first moving object within the portion of the display;and adjusting the one or more calibration parameters based on the firstobject movement being associated with the eye movement information. 5.The method of claim 4, further comprising: determining the gazeinformation based on the eye movement information and the one or morecalibration parameters.
 6. The method of claim 1, wherein: thedetermining of the eye movement information associated with the userincludes: determining a path of the eye movement over a plurality offrames; and determining a velocity of the eye movement over a pluralityof frames; the first moving object moves along the first path at a firstvelocity; the second moving object moves along the second path at asecond velocity; and the determining which of the first path and thesecond path matches the eye movement information includes: measuring asimilarity of the path of the eye movement to each of the first path andthe second path; and measuring a similarity of the velocity of the eyemovement to each of the first velocity and the second velocity.
 7. Anon-transitory machine-readable storage medium storing instructionswhich, when executed by one or more processors, cause the one or moreprocessors to perform operations comprising: displaying a first movingobject on a display of a computing device, the first moving objectmoving along a first path, displaying a second moving object on thedisplay of the computing device, the second moving object moving along asecond path; capturing images of at least one eye of a user while thefirst moving object and the second moving object are displayed; whilethe first and second moving objects are displayed, determining, based onthe images of the at least one eye captured while the first movingobject and the second moving object are displayed, eye movementinformation associated with the user, the eye movement informationindicating eye movement of one or more eye features associated with atleast one eye of the user; determining which of the first path and thesecond path better matches the eye movement of the one or more eyefeatures associated with the at least one eye of the user; associatingthe eye movement information with the matching path; calculating one ormore calibration parameters for the user based on a location of thematching path and the eye movement information; calculating gazeinformation based on the eye movement information and the one or morecalibration parameters, the gaze information indicating informationabout where the user is looking; in response to the associating of theeye movement information with the matching path: changing the first pathof the first moving object to a third path; changing the second path ofthe second moving object to a fourth path; and determining that thematching path corresponds to at least a portion of a login sequence of auser; after the changing of the first path and the second path,determining second eye movement information indicating second eyemovement of the one or more eye features associated with the at leastone eye of the user; determining which of the third path and the fourthpath better matches the second eye movement of the one or more eyefeatures associated with the at least one eye of the user; associatingthe second eye movement information with the determined path;determining that the determined path corresponds to a last portion inthe login sequence of the user; and based on the determination that thedetermined path corresponds to the last portion in the login sequence ofthe user, granting access to an account of the user.
 8. Thenon-transitory machine-readable storage medium of claim 7, wherein theinstructions cause the one or more processors to perform furtheroperations, comprising: calculating the gaze information based on theeye movement information and the one or more calibration parameters. 9.The non-transitory machine-readable medium of claim 7, wherein: thedetermining of the eye movement information associated with the userincludes: determining a path of the eye movement over a plurality offrames; and determining a velocity of the eye movement over a pluralityof frames; the first moving object moves along the first path at a firstvelocity; the second moving object moves along the second path at asecond velocity; and the determining which of the first path and thesecond path matches the eye movement information includes: measuring asimilarity of the path of the eye movement to each of the first path andthe second path; and measuring a similarity of the velocity of the eyemovement to each of the first velocity and the second velocity.
 10. Adevice, comprising: a hardware-implemented display module configured to:display a first moving object on a display of a computing device, thefirst moving object moving along a first path; display a second movingobject on the display of the computing device, the second moving objectmoving along a second path; and a hardware-implemented eye trackingmodule configured to: capture images of at least one eye of a user whilethe first moving object and the second moving object are displayed;while the first and second moving objects are displayed, determine,based on the images of the at least one eye captured while the firstmoving object and the second moving object are displayed, eye movementinformation associated with the user, the eye movement informationindicating eye movement of one or more eye features associated with atleast one eye of the user; determine which of the first path and thesecond path better matches the eye movement of the one or more eyefeatures associated with the at least one eye of the user; associate theeye movement information with the matching path; calculate one or morecalibration parameters for the user based on a location of the matchingpath and the eye movement information; calculate gaze information basedon the eye movement information and the one or more calibrationparameters, the gaze information indicating information about where theuser is looking; in response to the associating of the eye movementinformation with the matching path: change the first path of the firstmoving object to a third path; change the second path of the secondmoving object to a fourth path; and determine that the matching pathcorresponds to a digit in a PIN of a user; after the change of the firstpath and the second path, determine second eye movement informationindicating second eye movement of the one or more eye featuresassociated with the at least one eye of the user; determine which of thethird path and the fourth path better matches the second eye movement ofthe one or more eye features associated with the at least one eye of theuser; associate the second eye movement information with the determinedpath; determine that the determined path corresponds to a last digit inthe PIN of the user; and based on the determination that the determinedpath corresponds to the last digit in the PIN of the user, grant accessto an account of the user.
 11. The device of claim 10, wherein thehardware-implemented eye tracking module is further configured tocalculate the gaze information based on the eye movement information andthe one or more calibration parameters.
 12. The device of claim 10,wherein the hardware-implemented eye tracking module is furtherconfigured to: determine a path of the eye movement over a plurality offrames; determine a velocity of the eye movement over a plurality offrames; the first moving object moves along the first path at a firstvelocity; the second moving object moves along the second path at asecond velocity; and the determination of which of the first path andthe second path matches the eye movement information includes: measuringa similarity of the path of the eye movement to each of the first pathand the second path; and measuring a similarity of the velocity of theeye movement to each of the first velocity and the second velocity.